import { ESGltfModel } from "esobjs-xe2-plugin/dist-node/esobjs-xe2-plugin-main";
import { EnumProperty, JsonProperty } from "xbsj-xe2/dist-node/xe2-base-objects";
import { PartialWithUndefinedReactivePropsToNativeProps, ReactivePropsToNativePropsAndChanged, extendClassProps, reactJson } from "xbsj-xe2/dist-node/xe2-base-utils";
import { SceneObjectKey } from "xbsj-xe2/dist-node/xe2-utils";

/**
 *  ESForest使用的模型
 */
export class ESFeTreeAdding extends ESGltfModel {
    static override readonly type = this.register('ESFeTreeAdding', this, { chsName: 'ESForest使用的模型', tags: ['ESObjects', '_ES_Impl_Cesium', '_ES_Impl_UE'], description: "地理多边形体" });
    override get typeName() { return 'ESFeTreeAdding'; }
    override get defaultProps() { return ESFeTreeAdding.createDefaultProps(); }
    override get json() { 
        return {
            // @ts-ignore
            ...this._innerGetJson(),
            "rotation":this.rotation,
        } as JsonType;
     }
    override set json(value: JsonType) { this._innerSetJson(value); }

    constructor(id?: SceneObjectKey) {
        super(id);
        // this.show = false
    }
    override getESProperties() {
        const properties = { ...super.getESProperties() };
        return {
            ...properties,
            coordinate: [
                ...properties.coordinate,
            ]
        };
    };
    override getProperties(language: string) {
        return [
            ...super.getProperties(language),
        ];
    }
}

export namespace ESFeTreeAdding {
    export const createDefaultProps = () => ({
        ...ESGltfModel.createDefaultProps(),
        treeModelClassName: undefined as string | undefined,
        shugao: undefined as number | undefined,
        xiongjing: undefined as number | undefined,
        zhixiagao: undefined as number | undefined,
        dongxiguanfu: undefined as number | undefined,
        nanbeiguanfu: undefined as number | undefined,
        plotId: undefined as string | undefined,
        time: undefined as string | undefined,
    });
}
extendClassProps(ESFeTreeAdding.prototype, ESFeTreeAdding.createDefaultProps);
export interface ESFeTreeAdding extends ReactivePropsToNativePropsAndChanged<ReturnType<typeof ESFeTreeAdding.createDefaultProps>> { }
type JsonType = PartialWithUndefinedReactivePropsToNativeProps<ReturnType<typeof ESFeTreeAdding.createDefaultProps> & { type: string }>;